制作 img 镜像
1.更新源
sudo apt-get update
2.安装依赖
sudo apt-get install fakeroot build-essential ncurses-dev xz-utils
sudo apt-get install libssl-dev bc flex libelf-dev bison
3.编译内核
在 https://www.kernel.org/ 下载一个 Linux 内核,并放在用户目录下
解压内核(把 * 换成对应的版本号)
tar -xvf linux-*.tar.xz
配置编译 x86_64 内核
cd linux-*
make x86_64_defconfig
make bzImage -j$(nproc)
复制到用户目录下备用
sudo cp arch/x86/boot/bzImage ~/
4.制作 initrd
cd ~/
sudo mkinitramfs -o ~/initrd
5.创建镜像
镜像大小根据内核大小来定
dd if=/dev/zero of=linux.img bs=1M count=256
给镜像创建分区
fdisk linux.img
(n p 回车 回车 回车 w)

查看镜像的分区情况
fdisk -l linux.img

6.挂载为 loop 设备
sudo losetup -fP linux.img
LOOPDEV=$(losetup -j linux.img | cut -d: -f1)
7.挂载分区
sudo mkfs.ext4 ${LOOPDEV}p1
sudo mkdir -p mnt/data
sudo mount ${LOOPDEV}p1 mnt/data
8.安装 Legacy 启动的文件
sudo grub-install --boot-directory=mnt/data/boot/ --target=i386-pc --modules=part_msdos linux.img
9.创建 GRUB 配置文件
sudo nano mnt/data/boot/grub/grub.cfg
输入以下内容
set timeout=10 menuentry 'Linux' { linux (hd0,msdos1)/casper/bzImage console=tty0 initrd (hd0,msdos1)/casper/initrd }
按 Ctrl+O 保存,按 Ctrl+X 关闭
10.复制内核到分区
sudo mkdir -p ~/mnt/data/casper
sudo cp ~/bzImage ~/mnt/data/casper/
sudo cp ~/initrd ~/mnt/data/casper/
11.卸载分区和镜像
sudo umount mnt/data
sudo losetup -d $LOOPDEV
启动镜像
注:此方法只支持 Legacy 启动
可通过 qemu 启动,或刻录到U盘启动